PVG - PETSCII VIDEO GENERATOR V1.0
By LDX#40 in MMXIX
kunstscheisse.net/ldx40

This program draws PETSCII-based patterns. You can either control what is drawn by yourself -
or let the system take over and create a randomized experience.

---------------------------------------------------------------------------------------------------------------

SETUP SCREEN:

Use the letters highlighted in red to change the option. Shift + red letter changes the option back.

Cycle thru PETSCII sets:  p, shift & p

Cycle thru color schemes: c, shift & c

                          > the last color scheme (#13) consists of randomly generated colors

New random color scheme:  *

                          > automatically selects the random color scheme & generates new colors.

Cycle thru modes:         m, shift & m

Toggle snake mode:        k, shift & k

                          > ONLY AFFECTS DRAWNING WHEN SNAKE MODE IS SELECTED

Cycle thru curve types:   u, shift & u

                          > ONLY AFFECTS DRAWNING WHEN CURVE MODE IS SELECTED

Toggle curve direction:   l, shift & l

                          > ONLY AFFECTS DRAWNING WHEN CURVE MODE IS SELECTED

Cycle thru patterns:      t, shift & t

                          > the patterns are composed of 3x3 characters

Cycle thru color modes:   o, shift & o

                          > scheme random: random colors from the currently selected color scheme are used
                          > scheme fixed:  the brightest color of the current set is used
                          > random:        after every draw step, a new random color scheme is created
                                           ONLY HAS AN EFFECT IF THE RANDOM COLOR SCHEME IS SELECTED

Cycle thru fade triggers: f, shift & f

                          > never:      no fading
                          > every step: if one pattern has been drawn, all characters are faded one color
                                        "down" in the current scheme
                          > full draw:  if a complete draw cycle (e.g. curve across the whole screen) has
                                        been finished, all characters are faded one color "down" in the
                                        current scheme
                                        DOES NOT WORK FOR RANDOM AND SNAKE MODE
                          > ONLY CHARACTERS WITH A COLOR FROM THE CURRENT SCHEME ARE FADED

Toggle fade target:       a, shift & a

                          > fade characters to background color or darkest color from current scheme

Toggle fade on change:    d, shift & d

                          > if selected, the whole screen is faded to the selected fade target when
                            PETSCII, color scheme, mode or curve type are changed

In/decrease delay #1:     1, shift & 1
In/decrease delay #2:     2, shift & 2

                          > determines the time that passes before the next step is drawn
                          > range: delay 1 - $01-38; delay 2 - $01-fb
                          > delay 2 is modified in steps of 10, smaller values would not be noticeable
                          > the delay consists of two nested loops - delay 1 is the outer loop and causes
                            a more siginificant delay, delay 2 is the inner loop and allows fine tuning
                          > known issue: changing the setting always causes the next draw step to be
                                         triggered immediately

Toggle constant speed:    n, shift & n

                          > the different routines and fade modes have different execution times
                          > if constant speed is checked, drwaing takes place at the same speed
                            no matter what options are selected
                          > if constant speed is not checked, drawing is done as fast as possible

Reset:                    r, shift & r

                          > reset all options to the settings at startup

Randomize:                z, shift & z

                          > go to the randomize screen (see RANDOMIZE SCREEN section)

Start:                    s, shift & s

                          > start drwaing

Load settings:            f1, f3, f5, f7

                          > loads one of four saved settings
                          > the screen flashes green on a successful load, red on an error
                          > loads values for randomize as well

Save current settings:    f2,f4,f6,f8

                          > the four keys correspond to four different settings
                          > the screen flashes green on a successful save, red on an error
                          > saves values for randomize as well

---------------------------------------------------------------------------------------------------------------
RANDOMIZE SCREEN:

Use the letters highlighted in red to change the option. Shift + red letter changes the option back.

In/decrease probability:  y, shift & y

                          > after every draw step, a random number between $0 and $255 is generated and
                            checked against the probability; if the random number is lower than the
                            probability, the settings are modified

Change mode:              g, shift & g

                          > rnd selected: after a successful probability check, another probability check is
                            carried out with a new randonm number for every selected setting in order to check
                            if it will actually be changed or skipped
                          > all selected: all selected parameters are changed after a successful probability
                            check

If one of the following settings is checked, it will be changed randomly; otherwise it will keep the value
defined in the setup screen. See SETUP SCREEN section for explanations of the settigs.

  PETSCII:                p, shift & p
  Color:                  c, shift & c
  Mode:                   m, shift & m
  Snake mode:             k, shift & k
  Curve type:             u, shift & u
  Curve direction:        i, shift & i
  Pattern:                t, shift & t
  Color mode:             o, shift & o
  Fade trigger:           f, shift & f
  Fade target:            a, shift & a
  Fade on change:         d, shift & d

In/decrease delay #1:     1, shift & 1
In/decrease delay #2:     2, shift & 2

                          > see explanation in SETUP SCREEN section

Toggle constant speed:    n, shift & n

                          > see explanation in SETUP SCREEN section

Back to setup:            b, shift & b

                          > go back to setup screen (see SETUP SCREEN section)

Start:                    s, shift & s

                          > start drawing

Load settings:            f1, f3, f5, f7 

                          > loads one of four saved settings
                          > the screen flashes green on a successful load, red on an error
                          > loads values for regular setup as well

Save current settings:    f2, f4, f6, f8

                          > the four keys correspond to four different settings
                          > the screen flashes green on a successful save, red on an error
                          > saves values for regular setup as well

---------------------------------------------------------------------------------------------------------------
WHILE GENERATING:

See SETUP SCREEN section for explanations for the settings.

KNOWN ISSUE: when keys are pressed, the current delay loop is aborted

Draw mode:                f1 - random
                          f3 - snake
                          f5 - curve
                          f7 - spiral
                          f2 - columns
                          f4 - rows

Toggle snake border mode: b

Curve type:               a, s, d, f, g - sine
                          h, j, k, l, shift & a, shift & s - cosine
                          shift & d, shift & f, shift & g, shift & h - sawtooth

Curve direction:          v

PETSCII set:              q - diagonal lines
                          w - big corners
                          e - quarter circles
                          r - small squares
                          t - horizontal and vertical lines
                          shift & q - triangles
                          shift & w - small corners
                          shift & e - rectangles
                          shift & r - t-pieces

Color scheme:             1 - grey & black background
                          2 - grey & cyan background
                          3 - grey & purple background
                          4 - grey & blue background
                          5 - red & black background
                          6 - red & grey background
                          7 - red & light blue background
                          8 - blue & black background
                          9 - blue & grey background
                          0 - green & black background
                          shift & 1 - green & purple background
                          shift & 2 - green & blue background
                          shift & 3 - random colors

Character patterns:       u - single character
                          i - x
                          o - +
                          p - rhombus
                          shift & u - square
                          shift & i - filled square
                          shift & o - caret (^)
                          shift & p - random

Control draw delay:       +, - - decrease/increase draw delay 1
                          shift & +, shift & - - increase/decrease draw delay 2
						  
Reset delay:              backspace

                          > reset draw delay to initial values

Toggle constant speed:    m

Pause/continue:           space

Exit draw mode:           return

                          > go back to setup screen
                          > settings keep the values they had while drawing

Fade instantly       :    home

                          > fade the current contents of the screen either to the darkest color of the color
                            scheme or the background - depends on the fade target
                          > the characters previously drawn are still there - try changing the background color
                            to see it
                          > AFFECTS ONLY CHARACTERS WITH A COLOR FROM THE CURRENT SCHEME

Clear screen:             shift & home      

                          > all characters presently on the screen are erased

Turn screen on/off:       *

                          > the routine keeps running
                          > background color changes are still visible

Cycle color mode:         y, shift & y

Cycle background color:   [comma], [dot]

                          > selecting a new color scheme sets its background color, no matter what
                            was selected here

Cycle fade trigger:       x, shift & x

Toggle fade target:       c

Toggle fade on change:    n

---------------------------------------------------------------------------------------------------------------
WHILE GENERATING (RANDOMIZE MODE):

KNOWN ISSUE: when keys are pressed to change settings, the current delay loop is aborted

Control probability:      cursor up/right - decrease/increase probability of changes

                          > wraps around: < 0 = ff, > ff = 0

Control draw delay:       +, - - decrease/increase draw delay
                          shift & +, shift & - - increase/decrease draw delay 2

Reset delay:              backspace

                          > reset draw delay to initial values

Toggle constant speed:    m

Pause/continue:           space

                          > pressing run/stop while paused exits drawing

Exit draw mode:           return

                          > go back to randomize screen
                          > settings keep the values they had while drawing

Fade instantly       :    home

                          > fade the current contents of the screen either to the darkest color of the color
                            scheme or the background - depends on the fade target
                          > the characters previously drawn are still there - try changing the background color
                            to see it
                          > AFFECTS ONLY CHARACTERS WITH A COLOR FROM THE CURRENT SCHEME

Clear screen:             shift & home 

                          > all characters presently on the screen are erased

Turn screen on/off:       *

                          > the routine keeps running
                          > background color changes are still visible
